#pragma once
#include "BaseCommand.h"


struct ci_less : public std::binary_function<std::wstring, std::wstring, bool>
{
    bool operator()( const std::wstring& lhs, const std::wstring& rhs ) const
	{
        return _wcsicmp( lhs.c_str(), rhs.c_str() ) < 0;
    }
};

typedef std::map<std::wstring, BaseCommand*, ci_less> COMMAND_MAP;
typedef COMMAND_MAP::iterator COMMAND_MAP_ITER;

class CommandList
{
public:
	CommandList();
	virtual ~CommandList();

	bool Execute( const wchar_t* pCommandLine );

private:
	COMMAND_MAP m_commandMap;
};
